package com.neusoft.yiyang.common.feign;

import feign.Logger;
import feign.Request;
import feign.RequestInterceptor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 全局 Feign 最小核心配置：Header 透传 + 超时控制 + 基础日志
 */
@Configuration
@EnableFeignClients(basePackages = "com.neusoft.yiyang") // 扫描所有 FeignClient 接口
public class FeignConfig {

    /**
     * 核心功能：透传请求头（如 Authorization、X-Trace-Id）
     */
    @Bean
    public RequestInterceptor feignAuthInterceptor() {
        return new FeignAuthInterceptor();
    }

    /**
     * 统一超时配置（可通过各服务的 application.yml 覆盖）
     */
    @Bean
    public Request.Options feignOptions(
            @Value("${feign.connect-timeout:3000}") int connectMs,
            @Value("${feign.read-timeout:5000}") int readMs) {
        return new Request.Options(connectMs, readMs);
    }

    /**
     * 基础日志级别（仅记录请求方法、URL、状态码）
     */
    @Bean
    public Logger.Level feignLoggerLevel() {
        return Logger.Level.BASIC;
    }
}
